home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2008 February / PCWFEB08.iso / Software / Freeware / Miro 1.0 / Miro_Installer.exe / resources / templates / channel < prev    next >
Encoding:
Text File  |  2007-11-12  |  10.8 KB  |  277 lines

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml"
  3.       eventCookie="@@@eventCookie@@@" dtvPlatform="@@@dtvPlatform@@@">
  4.  
  5. <head>
  6.     <base href="***feed.getBaseHref()***" />
  7.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  8.     <title>Miro Channel View</title>
  9.  
  10.     <link href="resource:css/main.css" rel="stylesheet" type="text/css" />
  11.     <t:include filename="dynamic.js" />
  12.     <t:include filename="settings.js" />
  13.     <script type="text/javascript" src="resource:templates/osxdnd.js" />
  14.     <t:execOnLoad><![CDATA[
  15. #print templateState
  16. global feed, showDownloads, showWatchableItems, showNewItems, allItemsMode, allItems, watchableItems, matchingItems, newItems, itemSort, itemSortWatchable, itemSortDownloading, notDeleted
  17.  
  18. def _setFeed(kargs):
  19.     global feed, allItemsMode, showDownloads, showNewItems, showWatchableItems
  20.  
  21.     # The main section
  22.     allItemsMode = False
  23.     
  24.     # Initial states of views in this template
  25.     showDownloads = False
  26.     showNewItems = True
  27.     showWatchableItems = True
  28.  
  29.     feed = views.feeds.getObjectByID(int(kargs['id']))
  30.     filters.switchNewItemsChannel(feed)
  31.     sorts.switchUnwatchedFirstChannel(feed)
  32.  
  33. def _updateView ():
  34.     global showNewItems, allItemsMode
  35.  
  36.     showNewItems = (len(watchableItems) == 0) or (len(newItems) > 0 and feed.getAutoDownloadMode() == 'off') or feed.getURL().startswith('dtv:directoryfeed')
  37.  
  38.     if len(newItems) == 0 or not showNewItems:
  39.         allItemsMode = True
  40.         matchingItems.recomputeFilter(newItems)
  41.  
  42.     feed.updateIcons()
  43.  
  44. def reInit(*args, **kargs):
  45.     global feed, allItems, showDownloads, showWatchableItems, showNewItems, allItemsMode, watchableItems, matchingItems, newItems, itemSort, itemSortWatchable, itemSortDownloading
  46.  
  47.     if feed.idExists():
  48.         feed.markAsViewed()
  49.  
  50.     #print "reinitting %s" % repr(kargs)
  51.     _setFeed(kargs)
  52.     itemSort = feed.itemSort
  53.     itemSortDownloading = feed.itemSortDownloading
  54.     itemSortWatchable = feed.itemSortWatchable
  55.     newItems.sortFunc = feed.itemSort.sort
  56.     downloadingItems.sortFunc = feed.itemSortDownloading.sort
  57.     watchableItems.sortFunc = feed.itemSortWatchable.sort
  58.  
  59.     allItems.changeIndexValue(indexes.itemsByFeed, int(kargs['id']))
  60.     views.feeds.recomputeFilter(thisFeedView)
  61.  
  62.     _updateView()
  63.  
  64. def showDownloadsFilter(x):
  65.     return showDownloads
  66.  
  67. def showWatchableFilter(x):
  68.     return showWatchableItems
  69.  
  70. def showNewFilter(x):
  71.     isNew = filters.newItems(x)
  72.     # need to make call newItems() so that the filter remembers if the item
  73.     # was flagged as new or not.
  74.     return showNewItems and (allItemsMode or isNew)
  75.  
  76. def updateSearchString(newSearch):
  77.     global feed
  78.     if len(newSearch) == 0:
  79.         feed.setInlineSearchTerm(None)
  80.     else:
  81.         feed.setInlineSearchTerm(newSearch)
  82.     allItems.recomputeFilters()
  83.  
  84. def toggleDownloadsView(handle):
  85.     global showDownloads
  86.     showDownloads = not showDownloads
  87.     allDownloadingItems.recomputeFilter(downloadingItems)
  88.     handle.forceUpdate()
  89.  
  90. def toggleWatchableView(handle):
  91.     global showWatchableItems
  92.     showWatchableItems = not showWatchableItems
  93.     allWatchableItems.recomputeFilter(watchableItems)
  94.     handle.forceUpdate()
  95.  
  96. def toggleNewItemsView(handle):
  97.     global showNewItems
  98.     showNewItems = not showNewItems
  99.     matchingItems.recomputeFilter(newItems)
  100.     handle.forceUpdate()
  101.  
  102. def toggleAllItemsMode(handle):
  103.     global allItemsMode
  104.     allItemsMode = not allItemsMode
  105.     matchingItems.recomputeFilter(newItems)
  106.     handle.forceUpdate()
  107.  
  108. def setSortBy(by, which, handle):
  109.     if which == 'main':
  110.       feed.itemSort.setSortBy(by)
  111.       matchingItems.recomputeSort(newItems)
  112.     elif which == 'downloading':
  113.       feed.itemSortDownloading.setSortBy(by)
  114.       allDownloadingItems.recomputeSort(downloadingItems)
  115.     else:
  116.       feed.itemSortWatchable.setSortBy(by)
  117.       allWatchableItems.recomputeSort(watchableItems)
  118.     handle.forceUpdate()
  119.  
  120. _setFeed(kargs)
  121.  
  122. allItems = views.items.filterWithIndex(indexes.itemsByFeed, feed.getID())
  123. notDeleted = allItems.filter(filters.notDeleted)
  124. matchingItems = notDeleted.filter(lambda x: filters.matchingItems(x, feed.inlineSearchTerm))
  125. newItems = matchingItems.filter(showNewFilter, sortFunc=feed.itemSort.sort, resort=True)
  126.  
  127. allDownloadingItems = matchingItems.filter(filters.downloadingOrPausedItems)
  128. downloadingItems = allDownloadingItems.filter(showDownloadsFilter,sortFunc=feed.itemSortDownloading.sort,resort=True)
  129. allWatchableItems = matchingItems.filter(filters.watchableItems)
  130. watchableItems = allWatchableItems.filter(showWatchableFilter,sortFunc=feed.itemSortWatchable.sort,resort=True)
  131.  
  132. thisFeedView = views.feeds.filter(lambda x: x is feed)
  133. itemSort = feed.itemSort
  134. itemSortWatchable = feed.itemSortWatchable
  135. itemSortDownloading = feed.itemSortDownloading
  136.  
  137. def allItemsHaveState(view, state):
  138.     for item in view:
  139.         if item.getState() != state:
  140.             return False
  141.     return True
  142. def allItemsPaused(view):
  143.     return allItemsHaveState(view, 'paused')
  144. def allItemsDownloading(view):
  145.     return allItemsHaveState(view, 'downloading')
  146.  
  147. _updateView()
  148.  
  149. isFolder = False
  150. ]]>
  151.     </t:execOnLoad>
  152.     <t:execOnUnload><![CDATA[
  153. matchingItems.unlink()
  154. thisFeedView.unlink()
  155. notDeleted.unlink()
  156. allItems.unlink()
  157. if feed.idExists():
  158.     feed.markAsViewed()
  159. ]]>
  160.     </t:execOnUnload>
  161.  
  162. </head>
  163.  
  164. <body onkeydown="sendKeyToSearchBox(event);">
  165. <div id="feed-settings">
  166.   <div t:updateForView="thisFeedView">
  167.     <t:includeTemplate filename="feed-settings" />
  168.   </div>
  169. </div>
  170.     
  171. <!-- TITLE BAR ************************************************************ -->
  172.  
  173. <div id="main-titlebar">
  174.         <div t:updateForView="thisFeedView">
  175.             <div>
  176.                 <img id="main-icon" src="***feed.getThumbnail()***" alt=""/>
  177.         </div>
  178.             <div class="main-titlebar-right" t:hideIf="feed.getURL().startswith('dtv:directoryfeed')">
  179.                 <ul>
  180.                     <li t:hideIf="feed.getLink() == ''">
  181.                         <a href="***feed.getLink()***" class="round-button-left black">
  182.                         <div class="round-button-right black">
  183.                         <div class="round-button-content black">
  184.                         <span i18n:translate="">VISIT WEBSITE</span>
  185.                         </div>
  186.                         </div>
  187.                         </a>
  188.                     </li>
  189.                     <li>
  190.                         <a href="#" onclick="return recommendChannel('@@@feed.getTitle()@@@', '@@@feed.getURL()@@@');" class="round-button-left black">
  191.                         <div class="round-button-right black">
  192.                         <div class="round-button-content black">
  193.                         <span i18n:translate="">SEND TO FRIEND</span>
  194.                         </div>
  195.                         </div>
  196.                         </a>
  197.                     </li>
  198.                     <li>
  199.                         <a href="#" onclick="return showSettings();" class="round-button-left black">
  200.                         <div class="round-button-right black">
  201.                         <div class="round-button-content black">
  202.                         <span i18n:translate="">SETTINGS</span>
  203.                         </div>
  204.                         </div>
  205.                         </a>
  206.                     </li>
  207.                 </ul>
  208.         </div>
  209.         </div>
  210.  
  211.         <div class="main-titlebar-left">
  212.             <div t:updateForView="thisFeedView">
  213.             <h1 id="main-title" t:replace="feed.getTitle()" />
  214.             <div id="auto-download">
  215.                 <div t:hideIf="feed.getURL().startswith('dtv:directoryfeed')">
  216.                     <div class="auto-download">
  217.                         <span id="auto-label" i18n:translate="">AUTO DOWNLOAD</span>
  218.                         <div class="select-box-left" onclick="showSelectBoxMenu('auto-download-menu');">
  219.                         <div class="select-box-right">
  220.                         <div class="select-box-mid" t:hideIf="feed is None">
  221.                             <span t:replace="feed.getAutoDownloadMode()" />
  222.                         </div>
  223.                         </div>
  224.                         </div>
  225.                         
  226.                         <br clear="all" />
  227.                         <ul id="auto-download-menu" class="select-box-menu" t:hideIf="feed is None">
  228.                             <li onclick="return eventURL('action:setAutoDownloadMode?mode=all&feed=@@@feed.getID()@@@');" ><a href="#"><strong>ALL</strong> - Get all videos</a></li>
  229.                             <li onclick="return eventURL('action:setAutoDownloadMode?mode=new&feed=@@@feed.getID()@@@');" ><a href="#"><strong>NEW</strong> - Get only new videos</a></li>
  230.                             <li onclick="return eventURL('action:setAutoDownloadMode?mode=off&feed=@@@feed.getID()@@@');" ><a href="#"><strong>OFF</strong> - Don't auto-download videos</a></li>
  231.                         </ul>
  232.                     </div>
  233.                 </div>
  234.             </div>
  235.             <div id="search-box-container" t:hideIf="'feed' in localvars and feed.getURL() == 'dtv:search'">
  236.                 <div t:showIf="feed.inlineSearchTerm is None">
  237.                     <input id="search-box" type="search" onfocus="onSearchFocus(this)" onblur="endEditSearch()" value="***_('Find')***" />
  238.                 </div>
  239.                 <div t:showIf="feed.inlineSearchTerm is not None">
  240.                     <input id="search-box" type="search" onfocus="onSearchFocus(this)" onblur="endEditSearch()" value="***feed.inlineSearchTerm***" searching="1"/>
  241.                 </div>
  242.             </div>
  243.             </div>
  244.             <div t:updateForView="matchingItems">
  245.             <div t:hideIf="feed.inlineSearchTerm is None or feed.getURL().startswith('dtv:directoryfeed')">
  246.                 <div class="white-button-left save-search-channel">
  247.                 <div class="white-button-right">
  248.                 <div class="white-button-middle">
  249.                     <a href="#" onclick="return eventURL('action:addChannelSearchFeed?id=@@@feed.getID()@@@');">Save Search</a>
  250.                 </div>
  251.                 </div>
  252.                 </div>
  253.             </div>
  254.             </div>
  255.         </div>
  256. </div>
  257. <!-- / TITLE BAR -->
  258.  
  259. <!-- CHANNEL CONTAINER **************************************************** -->
  260. <div id="main-container">
  261.     <div class="main-container-scraping" t:showIf="feed.isScraped() and feed.isUpdating()" t:updateHideOnView="thisFeedView">
  262.     <div class="scraping-indicator">
  263.       <img align="left" src="resource:images/scraping-indicator-left.gif" />
  264.       <img align="right" src="resource:images/scraping-indicator-right.gif" />
  265.       <div class="scraping-content" i18n:translate="">Looking for videos 
  266.       at this URL</div>
  267.     </div>
  268.     </div>
  269.     <div class="hide-channel-title">
  270.         <t:includeTemplate filename="channel-content" />
  271.     </div>
  272. </div>
  273. <!-- / CHANNEL ITEMS LIST -->
  274.  
  275. </body>
  276. </html>
  277.